from PySide2.QtWidgets import QApplication,QMessageBox
from PySide2.QtUiTools import QUiLoader
import requests
import json
from lib.share import SI

class Win_Login:
    # python初始化函数，相当于Java的构造器
    def __init__(self):
        # 从文件中加载UI定义

        # 从UI 定义中动态 创建一个响应的窗口对象
        # 注意：里面的控件对象也成为窗口对象的属性了
        # 比如 self.ui.button ,self.ui.textEdit
        # 动态加载login 的ui文件
        self.ui = QUiLoader().load('../ui/login.ui')
        # 为属性为 button_login 的按钮添加点击事件执行的函数
        self.ui.button_login.clicked.connect(self.onSignIn)
        # 当用户输入完密码之后，点击回车，进行登录
        self.ui.edit_password.returnPressed.connect(self.onSignIn)
    # 登录函数
    def onSignIn(self):
        # 获取类名为edit_username的input输入框中的文本 并去除空格
        username = self.ui.edit_username.text().strip()
        # 获取类名为edit——password的input输入框中的文本  并去除空格
        password = self.ui.edit_password.text().strip()

        s = requests.Session()

        # print(f'用户名为:{username},密码为：{password}')
        url = f'http://localhost:7777/user/login'
        data = json.dumps({"username": username,  "password": password})
        response = s.post(url=url, data=data, headers={"Content-Type": "application/json;charset=UTF-8"})
        # 获取字典
        res_obj = response.json()
        print(res_obj)
        if res_obj['start'] == 200:
            # 登录成功
            # print('登录成功')
            # 登录窗口关闭，主窗口显示

            SI.main_window = Win_Main()
            SI.main_window.ui.show()
            # 关闭自己
            # 关闭之前，将登录窗口中的密码输入框中的文本清空
            self.ui.edit_password.setText('')
            self.ui.hide()
        else:
            # 弹出警告框，显示登录失败
            QMessageBox.critical(self.ui, '登录失败', res_obj['data']['massage'])
            # 登录失败，返回
            return

        # 将从ui界面中获取的username和password通过requests 发送到服务器端
# 主窗口
class Win_Main:
    # 初始函数，构造器
    def __init__(self):
        self.ui = QUiLoader().load('../ui/main.ui')

app = QApplication([])

SI.login_window = Win_Login()

SI.login_window.ui.show()

app.exec_()









